﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados.ClassesSQLServer;
using Dados.Interfaces;
using Dados.ValueObjects;
using System.ComponentModel;

namespace Negocios
{
    [DataObject]
    public class ClienteBOMetodos
    {
        private ICliente iClienteDados;

        public ClienteBOMetodos()
        {
            //Verificar em algum arquivo a configuração qual o BD
            iClienteDados = new ClienteSQLServer();
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]
        public bool Insere(ClienteBO cBO)
        {
            ClienteVO cVO = new ClienteVO();
            cVO.Cpf = cBO.Cpf;
            cVO.Nome = cBO.Nome;
            cVO.Endereco = cBO.Endereco;
            cVO.Email = cBO.Email;
            cVO.Telefone = cBO.Telefone;
            return (iClienteDados.Insere(cVO) == 1);
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public bool Atualiza(ClienteBO cBO)
        {
            ClienteVO cVO = new ClienteVO();
            cVO.Cpf = cBO.Cpf;
            cVO.Nome = cBO.Nome;
            cVO.Endereco = cBO.Endereco;
            cVO.Email = cBO.Email;
            cVO.Telefone = cBO.Telefone;
            return (iClienteDados.Atualiza(cVO) == 1);
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
        public bool Remove(string cpf) 
        {
            return iClienteDados.Remove(cpf) == 1;
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
        public ClienteBO Consulta(string cpf) 
        {
            ClienteVO cVO = iClienteDados.Consulta(cpf);
            ClienteBO cBO = new ClienteBO();
            cBO.Cpf = cVO.Cpf;
            cBO.Nome = cVO.Nome;
            cBO.Endereco = cVO.Endereco;
            cBO.Email = cVO.Email;
            cBO.Telefone = cVO.Telefone;
            //cBO.Passagens = passagemBOMetodos.consultaPorCliente(cpf);
            //cBO.Pacotes = pacoteBOMetodos.consultaPorCliente(cpf);
            return cBO;
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
        public List<ClienteBO> ConsultaTodos()
        {
            List<ClienteBO> lClienteBO = new List<ClienteBO>();
            List<ClienteVO> lClienteVO = (new ClienteSQLServer()).ConsultaTodos();
            foreach (ClienteVO cVO in lClienteVO)
            {
                ClienteBO cBO = new ClienteBO();
                cBO.Cpf = cVO.Cpf;
                cBO.Nome = cVO.Nome;
                cBO.Endereco = cVO.Endereco;
                cBO.Email = cVO.Email;
                cBO.Telefone = cVO.Telefone;
                //cBO.Passagens = passagemBOMetodos.consultaPorCliente(cpf);
                //cBO.Pacotes = pacoteBOMetodos.consultaPorCliente(cpf);
                
                lClienteBO.Add(cBO);
            }
            return lClienteBO;
        }
       
    }
}
